package com.ylr.admin.common.enums;

import com.ylr.base.common.dto.NameValue;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wyw
 * date: 2023-05-11 09:43:55
 * className: RoleEnum
 * version: 1.0
 * description:
 */
@Getter
@AllArgsConstructor
public enum RoleEnum {

    NULL(null, null),

    // 角色类型
    DEFAULT_TYPE(0, "系统角色"), USER_TYPE(2, "用户角色"), ADMIN_TYPE(3, "管理角色"),
    ;

    /**
     * 值
     */
    private final Integer value;

    /**
     * 名称
     */
    private final String name;

    /**
     * 获取所属分组枚举对象列表
     */
    public static List<NameValue<Integer>> getTypeEnumList() {
        List<NameValue<Integer>> list = new ArrayList<>();
        list.add(new NameValue<>(DEFAULT_TYPE.name, DEFAULT_TYPE.value));
        list.add(new NameValue<>(USER_TYPE.name, USER_TYPE.value));
        list.add(new NameValue<>(ADMIN_TYPE.name, ADMIN_TYPE.value));
        return list;
    }

    /**
     * 获取所属分组枚举对象
     * @param value 值
     * @return 所属分组枚举对象
     */
    public static RoleEnum getTypeEnum(Integer value) {
        if (DEFAULT_TYPE.value.equals(value)) {
            return DEFAULT_TYPE;
        }
        if (USER_TYPE.value.equals(value)) {
            return USER_TYPE;
        }
        if (ADMIN_TYPE.value.equals(value)) {
            return ADMIN_TYPE;
        }
        return NULL;
    }

    /**
     * 校验所属分组值
     * @param value 值
     * @return true-正确 false-错误
     */
    public static boolean isTypeFail(Integer value) {
        return getTypeEnum(value) == NULL;
    }

}
